package chai.ning.interfaces.train_12;

import java.util.Random;

public class AircraftTest {
	public static void main(String[] args) {

		Random rand = new Random();
		Machine m = new Aircraft();

		auto: while (true) {
			int op = rand.nextInt(3); // 随机产生 [ 0 , 10 ) 之间的数字
			switch (op) {
			case 0:
				// 需要判断能量是否足以完成 陆地驾驶 操作，若不足就跳出循环 (如何从switch直接跳出while循环?)
				// 执行 陆地驾驶 操作 ( Machine 不具备陆地驾驶能力，需要转换为 Roadable 才可以调用 run 方法 )
				if (m.getEnergy() >= 10) {
					if (m instanceof Roadable) {
						Roadable r = (Roadable) m;
						r.run();
						break;
					}
				} else {
					break auto;
				}

			case 1:
				// 需要判断能量是否足以完成 水中航行 操作，若不足就跳出循环
				// 执行 水中航行 操作 ( Machine 不具备水中航行能力，需要转换为 Voyageable 才可以调用 voyage 方法 )
				if (m.getEnergy() >= 15) {
					if (m instanceof Voyageable) {
						Voyageable r = (Voyageable) m;
						r.voyage();
						break;
					}
				} else {
					break auto;
				}
			case 2:
				// 需要判断能量是否足以完成 空中飞行 操作，若不足就跳出循环
				// 执行 空中飞行 操作 ( Machine 不具备空中飞行能力，需要转换为 Flyable 才可以调用 fly 方法 )
				if (m.getEnergy() >= 25) {
					if (m instanceof Flyable) {
						Flyable r = (Flyable) m;
						r.fly();
						break;
					}
				} else {
					break auto;
				}
			default:
				// 不支持的操作
				break auto;
			}
		}
		// 最后输出 飞行器 的剩余能量
		System.out.println( m.getEnergy());
	}
}